//
//  AppDelegate.swift
//  MASINAWEIBO
//
//  Created by MISSAJJ on 16/5/25.
//  Copyright © 2016年 MISSAJJ. All rights reserved.
//

import UIKit
import QorumLogs //导入头文件
/*
 command + shift + j 快速定位到目录
 通过 ⬆️ ⬇️控制选中的目录
 按下回车进入目录编辑模式
 command + c 拷贝目录名称
 command + n 新建文件夹
 command + v 粘帖目录名称
 下一步下一步 直到创建文件完毕
 重复以上操作
 */
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    
    var window: UIWindow?
    
    
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        // 1.初始化 Log
        //写下这两句开启日志输出
        //QorumLogs.enabled = true  //false
        //QorumLogs.minimumLogLevelShown = 1
        //QorumLogs.test()
       // QL1("application")
        //QLPlusLine()
        //QLShortLine()
        
        //自定义 Log
//        MALog("test")
//        
//        
//        MALog("abc")
//        MALog(1)
//        MALog(10.1)
//        MALog([Int]())
//        MALog("123", fileName: "MISSAJJ")
        
        //2.初始化 window  
//        window = UIWindow(frame: UIScreen.mainScreen().bounds)
//        window?.backgroundColor = UIColor.whiteColor()
//        window?.rootViewController  = MainViewController()
//        window?.makeKeyAndVisible()
//        
        
        return true
    }
  
}

/*
 自定义LOG的目的:
 在开发阶段自动显示LOG
 在发布阶段自动屏蔽LOG
 
 print(#function)  // 打印所在的方法
 print(#line)     // 打印所在的行
 print(#file)     // 打印所在文件的路径
 
 方法名称[行数]: 输出内容
 函数的默认值: 如果调用者没有传递对应的参数, 那么系统就会使用默认值, 如果调用者传递了参数, 那么就会使用传递的参数
 
 由于编译器可以通过赋值的类型自动推导出数据的真实类型, 所以在Swift开发中, 能不写数据类型就不写数据类型
 优点: 可以减少冗余代码
 
 泛型:
 如果想在函数中使用泛型, 那么必须告诉系统者是一个泛型函数
 func 函数名称<T>(形参列表) -> 返回值类型
 {
 }
 message : T
 T具体是什么类型由调用者来确定, 调用者传递的是什么类型, T就是什么类型
 
 */

func MALog<T>(message : T, fileName: String = #file, methodName: String = #function, lineNumber: Int = #line)  {
    
    #if DEBUG  //swift 系统已经不支持宏定义了,所以需要用 DEBUG必须在在 Build Setting 搜索 custom flag, 点开 Other Swift Flags, 在 DEbug 处添加 `-D DEBUG`
        
        //    print("\((fileName as NSString).pathComponents.last!).\(methodName)[\(lineNumber)]:\(message)")
        
        print("\(methodName)[\(lineNumber)]: \(message)")
    #endif
    
}